// 健康档案相关API服务
const request = require('../utils/request');

/**
 * 添加健康档案
 * @param {Object} data 健康档案数据
 * @returns {Promise} Promise对象
 */
const addMedicalRecord = (data) => {
  console.log('添加健康档案, 数据:', data);
  return request.post('/medical', data)
    .then(res => {
      console.log('添加健康档案成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('添加健康档案失败:', err);
      throw err;
    });
};

/**
 * 获取健康档案详情
 * @param {number} id 档案ID
 * @returns {Promise} Promise对象
 */
const getMedicalRecord = (id) => {
  console.log('获取健康档案详情, ID:', id);
  return request.get(`/medical/${id}`)
    .then(res => {
      console.log('获取健康档案详情成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('获取健康档案详情失败:', err);
      return null;
    });
};

/**
 * 更新健康档案
 * @param {number} id 档案ID
 * @param {Object} data 档案数据
 * @returns {Promise} Promise对象
 */
const updateMedicalRecord = (id, data) => {
  console.log('更新健康档案, ID:', id, '数据:', data);
  return request.put(`/medical/${id}`, data)
    .then(res => {
      console.log('更新健康档案成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('更新健康档案失败:', err);
      throw err;
    });
};

/**
 * 获取宠物健康档案列表
 * @param {number} petId 宠物ID
 * @returns {Promise} Promise对象
 */
const getPetMedicalRecords = (petId) => {
  console.log('获取宠物健康档案列表, 宠物ID:', petId);
  return request.get(`/medical/pet/${petId}`)
    .then(res => {
      console.log('获取宠物健康档案列表成功, 返回:', res);
      return res || [];
    })
    .catch(err => {
      console.error('获取宠物健康档案列表失败:', err);
      return [];
    });
};

/**
 * 获取宠物健康档案分页
 * @param {number} petId 宠物ID
 * @param {number} page 页码
 * @param {number} size 每页大小
 * @returns {Promise} Promise对象
 */
const getPetMedicalRecordsPage = (petId, page = 1, size = 10) => {
  console.log('获取宠物健康档案分页, 宠物ID:', petId, '页码:', page, '每页大小:', size);
  return request.get(`/medical/pet/${petId}/page`, { page, size })
    .then(res => {
      console.log('获取宠物健康档案分页成功, 返回:', res);
      return res || { records: [], total: 0, pages: 0, current: page, size: size };
    })
    .catch(err => {
      console.error('获取宠物健康档案分页失败:', err);
      return { records: [], total: 0, pages: 0, current: page, size: size };
    });
};

/**
 * 获取医生创建的健康档案
 * @param {number} page 页码
 * @param {number} size 每页大小
 * @returns {Promise} Promise对象
 */
const getStaffMedicalRecords = (page = 1, size = 10) => {
  console.log('获取医生创建的健康档案, 页码:', page, '每页大小:', size);
  return request.get('/medical/staff', { page, size })
    .then(res => {
      console.log('获取医生创建的健康档案成功, 返回:', res);
      return res || { records: [], total: 0, pages: 0, current: page, size: size };
    })
    .catch(err => {
      console.error('获取医生创建的健康档案失败:', err);
      return { records: [], total: 0, pages: 0, current: page, size: size };
    });
};

/**
 * 根据预约ID获取健康档案
 * @param {number} appointmentId 预约ID
 * @returns {Promise} Promise对象
 */
const getMedicalRecordByAppointmentId = (appointmentId) => {
  console.log('根据预约ID获取健康档案, 预约ID:', appointmentId);
  return request.get(`/medical/appointment/${appointmentId}`)
    .then(res => {
      console.log('根据预约ID获取健康档案成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('根据预约ID获取健康档案失败:', err);
      return null;
    });
};

/**
 * 获取宠物疫苗接种记录
 * @param {number} petId 宠物ID
 * @returns {Promise} Promise对象
 */
const getVaccineRecords = (petId) => {
  console.log('获取宠物疫苗记录, 宠物ID:', petId);
  return request.get(`/vaccine/pet/${petId}`)
    .then(res => {
      console.log('获取宠物疫苗记录成功, 返回:', res);
      return res || [];
    })
    .catch(err => {
      console.error('获取宠物疫苗记录失败:', err);
      return [];
    });
};

/**
 * 添加疫苗接种记录
 * @param {Object} data 疫苗记录数据
 * @returns {Promise} Promise对象
 */
const addVaccineRecord = (data) => {
  console.log('添加疫苗记录, 数据:', data);
  return request.post('/vaccine', data)
    .then(res => {
      console.log('添加疫苗记录成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('添加疫苗记录失败:', err);
      throw err;
    });
};

/**
 * 更新疫苗接种记录
 * @param {number} id 疫苗记录ID
 * @param {Object} data 疫苗记录数据
 * @returns {Promise} Promise对象
 */
const updateVaccineRecord = (id, data) => {
  console.log('更新疫苗记录, ID:', id, '数据:', data);
  return request.put(`/vaccine/${id}`, data)
    .then(res => {
      console.log('更新疫苗记录成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('更新疫苗记录失败:', err);
      throw err;
    });
};

/**
 * 获取疫苗接种记录详情
 * @param {number} id 疫苗记录ID
 * @returns {Promise} Promise对象
 */
const getVaccineRecord = (id) => {
  console.log('获取疫苗记录详情, ID:', id);
  return request.get(`/vaccine/${id}`)
    .then(res => {
      console.log('获取疫苗记录详情成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('获取疫苗记录详情失败:', err);
      return null;
    });
};

/**
 * 删除疫苗接种记录
 * @param {number} id 疫苗记录ID
 * @returns {Promise} Promise对象
 */
const deleteVaccineRecord = (id) => {
  console.log('删除疫苗记录, ID:', id);
  return request.delete(`/vaccine/${id}`)
    .then(res => {
      console.log('删除疫苗记录成功, 返回:', res);
      return res;
    })
    .catch(err => {
      console.error('删除疫苗记录失败:', err);
      throw err;
    });
};

module.exports = {
  addMedicalRecord,
  getMedicalRecord,
  updateMedicalRecord,
  getPetMedicalRecords,
  getPetMedicalRecordsPage,
  getStaffMedicalRecords,
  getMedicalRecordByAppointmentId,
  getVaccineRecords,
  addVaccineRecord,
  updateVaccineRecord,
  getVaccineRecord,
  deleteVaccineRecord
}; 